/*****************************
 *@file: BaseSkill
 *@author: 陈吕唐
 *@desc: 基础技能逻辑
 *@date: 2024-03-19	15:56
 *****************************/
import { _decorator, Component } from 'cc';
import SkillVO from '../../pojo/vo/SkillVO';
import { BaseCharacter } from '../BaseCharacter';
const { ccclass, property, requireComponent } = _decorator;

@ccclass('BaseSkill')
@requireComponent(BaseCharacter)
export class BaseSkill extends Component {
    /****************************************************************************************************************
     *Readonly 常量
     ****************************************************************************************************************/
    /****************************************************************************************************************
     *Property 定义变量
     ****************************************************************************************************************/
    /**
     * 当前人物
     */
    protected _character: BaseCharacter;

    /**
     * 时间
     */
    protected CD_TIME = 2;

    /**
     * 技能值
     */
    protected value: number = 0;

    /**
     * 技能名称
     */
    protected skillName: string = '技能名称';
    /***************************************************************
     *PropertyUI 引用的控件
     ***************************************************************/
    /****************************************************************************************************************
     * Lifecycle 生命周期相关方法
     ****************************************************************************************************************/

    /**
     * 更新技能数值
     * @param dto 
     */
    public updateValue(dto: SkillVO) {
        this.CD_TIME = dto.time;
        this.value = dto.value;
        this.skillName = dto.name;
    }

    protected onLoad(): void {

    }

    protected lateUpdate(dt: number): void {

    }

    protected onDisable(): void {

    }
    /****************************************************************************************************************
     * Public 公有方法
     ****************************************************************************************************************/
    /****************************************************************************************************************
     * private 私有方法
     ****************************************************************************************************************/
    /****************************************************************************************************************
     * Property Get && Set 属性的 get && set 函数
     ****************************************************************************************************************/
    protected get character(): BaseCharacter {
        if (!this._character) {
            this._character = this.node.getComponent(BaseCharacter);
        }
        return this._character;
    }
    protected set character(value: BaseCharacter) {
        this._character = value;
    }
}


